// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef MEDIA_REMOTING_REMOTING_CDM_CONTEXT_H_
#define MEDIA_REMOTING_REMOTING_CDM_CONTEXT_H_

#include "media/base/cdm_context.h"

namespace media {

class RemotingCdm;
class RemotingSourceImpl;

// TODO(xjz): Merge this with erickung's implementation.
class RemotingCdmContext : public CdmContext {
public:
    explicit RemotingCdmContext(RemotingCdm* remoting_cdm);
    ~RemotingCdmContext() override;

    // If |cdm_context| is an instance of RemotingCdmContext, return a type-casted
    // pointer to it. Otherwise, return nullptr.
    static RemotingCdmContext* From(CdmContext* cdm_context);

    RemotingSourceImpl* GetRemotingSource();

    // CdmContext implementations.
    Decryptor* GetDecryptor() override;
    int GetCdmId() const override;
    void* GetClassIdentifier() const override;

private:
    RemotingCdm* const remoting_cdm_; // Outlives this class.

    DISALLOW_COPY_AND_ASSIGN(RemotingCdmContext);
};

} // namespace media

#endif // MEDIA_REMOTING_REMOTING_CDM_CONTEXT_H_
